package com.neuedu.his.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.neuedu.his.po.Checkapply;

import java.util.List;

/**
 * @author root
 * @description 针对表【checkapply】的数据库操作Service
 * @createDate 2025-06-25 10:55:53
 */
public interface CheckapplyService extends IService<Checkapply> {
    /**
     * 开具检查申请
     * @param medicalRecordId 病历ID
     * @param registerId 挂号ID
     * @param doctorId 开立医生ID
     * @param itemIds 项目ID列表
     * @param objectives 目的要求列表
     * @param positions 检查部位列表
     * @param isUrgents 是否加急列表
     * @param nums 数量列表
     * @return 是否成功
     */
    boolean createCheckApply(Integer medicalRecordId, Integer registerId, Integer doctorId, List<Integer> itemIds, List<String> objectives, List<String> positions, List<Integer> isUrgents, List<Integer> nums);

    /**
     * 获取待检查项目列表
     * @return 待检查项目列表
     */
    List<Checkapply> getPendingChecks();

    /**
     * 按科室获取待检查项目列表
     * @param deptId 科室ID
     * @return 待检查项目列表
     */
    List<Checkapply> getPendingChecksByDept(Integer deptId);

    /**
     * 更新检查申请状态
     * @param checkApplyIds 检查申请ID列表
     * @param state 目标状态
     * @return 是否成功
     */
    boolean updateState(List<Integer> checkApplyIds, Integer state);

    /**
     * 开始检查
     * @param checkApplyId 检查申请ID
     * @param operatorId 操作员ID
     * @return 是否成功
     */
    boolean startCheck(Integer checkApplyId, Integer operatorId);

    /**
     * 获取所有检查项目列表
     * @return 所有检查项目列表
     */
    List<Checkapply> getAllChecks();

    /**
     * 按科室获取所有检查项目列表
     * @param deptId 科室ID
     * @return 所有检查项目列表
     */
    List<Checkapply> getChecksByDept(Integer deptId);


    /**
     * 获取所有检查项目列表，包含患者姓名
     * @return 所有检查项目列表，包含患者姓名
     */
    List<Checkapply> getAllChecksWithPatientName();

    /**
     * 按科室获取所有检查项目列表，包含患者姓名
     * @param deptId 科室ID
     * @return 所有检查项目列表，包含患者姓名
     */
    List<Checkapply> getChecksByDeptWithPatientName(Integer deptId);


}